package com.lxq.test2112.main02;
import java.lang.*;
import java.util.*;

public class Main {
    public static long h(long i, long r){
        if (i<0) {
            return 0;
        }
        return r*((i+1)/r-1)*((i+1)/r)/2+(i+1)%r*(i/r);
    }
    public static long cal(int fi, long lft, long rgt, long r) {
        return Math.abs(h(rgt,r)-h(lft-1,r)-fi*(rgt-lft+1));
    }
    public static void main(String[] args) {
        int n;
        long N;
        Scanner sc = new Scanner(System.in);
        n=sc.nextInt();
        N=sc.nextLong();
        long[] A = new long[n+2];
        A[0]=0;
        for (int i=0;i<n;i++){
            A[i+1]=sc.nextLong();
        }
        A[n+1] = N;

        long r=N/(n+1),error = 0;
        for (int fi=0;fi<=n;++fi){
            long lft=A[fi],rgt=A[fi+1]-1;
            if (lft/r>=fi||rgt/r<=fi){
                error = error + cal(fi,lft,rgt,r);
            }else{
                error = error + cal(fi,lft,r*fi,r) + cal(fi,r*fi+1,rgt,r);
            }
        }
        System.out.println(error);
    }


    //score:70%
//    public static void main(String[] args) {
//        int n,N,r,error=0;
//        Scanner sc = new Scanner(System.in);
//        n = sc.nextInt();
//        N = sc.nextInt();
//        r=N/(n+1);
//
//        int[] A = new int[n+2];
//        A[0]=0;
//        for (int i=1;i<n+1;i++){
//            A[i] = sc.nextInt();
//        }
//        A[n+1] = N;
//
//        int j=1,fi;
//        for (int i=0;i<N;i++){
//            if(i<A[j]){
//                fi=j-1;
//            }else{
//                fi=j;
//                j++;
//            }
//            error = error + Math.abs(i/r-fi);
//        }//o(10^9)
//        System.out.println(error);
//    }
}
